#include "my_inc/main_login.h"

// 登录界面
void log_in(face_p head, login_p data_log)
{
    face_p temp    = faceinsertend(head, "登录"); // 创建一个登录屏幕对象(在结构体内部)
    lv_obj_t * log = lv_img_create(temp->screen);
    lv_img_set_src(log, "A:img/log.jpg");
    lv_obj_set_size(log, 800, 480);

    lv_obj_t * obj = lv_obj_create(log);
    // lv_obj_set_style_opa(obj, LV_OPA_50, LV_PART_MAIN);  // 50% 透明度
    lv_obj_set_style_bg_color(obj, lv_color_hex(0xFFFFFF), LV_PART_MAIN); // 设置背景色
    lv_obj_set_style_bg_opa(obj, LV_OPA_50, LV_PART_MAIN);                // 只设置背景的透明度
    lv_obj_set_size(obj, 400, 300);
    lv_obj_center(obj);
    lv_obj_set_style_pad_all(obj, 0, LV_PART_MAIN); // 去掉默认的内补 20

    lv_obj_t * pwd_ta = lv_textarea_create(obj);            // 文本框
    lv_textarea_set_placeholder_text(pwd_ta, "请输入密码"); // 占位符文本
    lv_textarea_set_max_length(pwd_ta, 20);                 // 最大长度
    lv_textarea_set_password_mode(pwd_ta, true);            // 设置密码框
    lv_textarea_set_one_line(
        pwd_ta, true); // 单行输入模式。 在这个模式下，高度自动设置为仅显示一行，忽略换行符，并禁用自动换行。
    lv_obj_set_width(pwd_ta, 250);                  // 设置宽度
    lv_obj_clear_state(pwd_ta, LV_STATE_FOCUSED);   // 设置隐藏光标(单机时启用)
    lv_obj_align(pwd_ta, LV_ALIGN_CENTER, 50, -20); // 设置位置

    lv_obj_t * pwd_label = lv_label_create(obj);
    lv_label_set_text(pwd_label, "密码:"); // 设置密码框提示
    lv_obj_align_to(pwd_label, pwd_ta, LV_ALIGN_OUT_LEFT_MID, -80,
                    0); // 将 pwd_label 对象对齐到 pwd_ta 对象的外部左边中间位置。
    // LV_FONT_DECLARE(lv_font_montserrat_20); // 声明字体是外部定义的
    lv_obj_set_style_text_font(pwd_ta, &SourceHanSansCN_Bold_20, LV_PART_MAIN);    // 设置字体大小
    lv_obj_set_style_text_font(pwd_label, &SourceHanSansCN_Bold_20, LV_PART_MAIN); // 设置字体大小

    lv_obj_t * text_ta = lv_textarea_create(obj);
    lv_textarea_set_placeholder_text(text_ta, "请输入账号"); // 占位符文本
    lv_textarea_set_max_length(text_ta, 20);                 // 最大长度
    lv_textarea_set_one_line(text_ta, true);
    lv_textarea_set_password_mode(text_ta, false);
    lv_obj_set_width(text_ta, 250);
    lv_obj_align(text_ta, LV_ALIGN_TOP_MID, 50, 40);

    lv_obj_t * oneline_label = lv_label_create(obj);
    lv_label_set_text(oneline_label, "用户名:");
    lv_obj_align_to(oneline_label, text_ta, LV_ALIGN_OUT_LEFT_MID, -100, 0);
    // LV_FONT_DECLARE(lv_font_montserrat_20); // 声明字体是外部定义的(头文件中有了)
    lv_obj_set_style_text_font(text_ta, &SourceHanSansCN_Bold_20, LV_PART_MAIN);       // 设置字体大小
    lv_obj_set_style_text_font(oneline_label, &SourceHanSansCN_Bold_20, LV_PART_MAIN); // 设置字体大小

    kb = lv_keyboard_create(temp->screen);           // 创建键盘对象
    lv_obj_set_size(kb, LV_HOR_RES, LV_VER_RES / 2); // 设置键盘大小（占屏幕一半高度）
    lv_keyboard_set_textarea(kb, pwd_ta);            // 将键盘与密码文本区域关联
    lv_obj_add_flag(kb, LV_OBJ_FLAG_HIDDEN);
    lv_obj_add_event_cb(pwd_ta, ta_event_cb, LV_EVENT_ALL, kb);
    lv_obj_add_event_cb(text_ta, ta_event_cb, LV_EVENT_ALL, kb);

    lv_obj_t * label = lv_label_create(temp->screen);
    lv_obj_set_style_text_font(label, &lv_font_montserrat_20, LV_PART_MAIN);
    lv_obj_align(label, LV_ALIGN_TOP_LEFT, 0, 0);
    // 使用 LVGL 定时器更新时间
    timer = lv_timer_create(update_time_label, 1000, label); // 每秒更新
    lv_timer_set_repeat_count(timer, -1);                    // 无限重复

    // 提醒界面的文本
    label_hint = lv_label_create(obj);
    lv_label_set_text(label_hint, "");
    lv_obj_center(label_hint);
    lv_obj_set_pos(label_hint, 0, 25);
    lv_obj_set_style_text_color(label_hint, lv_color_hex(0x999999), LV_PART_MAIN);
    lv_obj_set_style_text_font(label_hint, &SourceHanSansCN_Bold_20, LV_PART_MAIN);

    // 提醒界面的文本
    lv_obj_t * label_warn = lv_label_create(log);
    lv_label_set_text(label_warn, "这是登录界面!");
    data_log->label_warn = label_warn;
    data_log->je         = 0;
    lv_obj_align(label_warn, LV_ALIGN_TOP_MID, 0, 60);
    lv_obj_set_style_text_color(label_warn, lv_color_hex(0Xff0000), LV_PART_MAIN);
    lv_obj_set_style_text_font(label_warn, &SourceHanSansCN_Bold_20, LV_PART_MAIN);

    // 登录按钮实现
    lv_obj_t * btn_in = lv_btn_create(obj);
    lv_obj_set_size(btn_in, 80, LV_SIZE_CONTENT);
    lv_obj_t * label_in = lv_label_create(btn_in);
    lv_obj_center(label_in);
    lv_label_set_text(label_in, "登录");
    lv_obj_set_style_text_font(label_in, &SourceHanSansCN_Bold_20, LV_PART_MAIN); // 设置字体大小
    lv_obj_align(btn_in, LV_ALIGN_BOTTOM_MID, -80, -50);
    data_log->username_ta = text_ta;
    data_log->password_ta = pwd_ta;
    data_log->btn_in      = btn_in;
    lv_obj_add_event_cb(btn_in, in_but_cb, LV_EVENT_CLICKED, data_log); // 添加登录按钮事件

    // 注册按钮实现
    lv_obj_t * reg = lv_btn_create(obj);
    lv_obj_set_size(reg, 80, LV_SIZE_CONTENT);
    lv_obj_t * label_reg = lv_label_create(reg);
    lv_obj_center(label_reg);
    lv_label_set_text(label_reg, "注册");
    lv_obj_set_style_text_font(label_reg, &SourceHanSansCN_Bold_20, LV_PART_MAIN); // 设置字体大小
    lv_obj_align(reg, LV_ALIGN_BOTTOM_MID, 80, -50);
    lv_obj_add_event_cb(reg, reg_but_cb, LV_EVENT_CLICKED, data_log); // 添加注册按钮事件

    // 返回按钮实现
    lv_obj_t * btn_re = lv_btn_create(obj);
    lv_obj_set_size(btn_re, 80, LV_SIZE_CONTENT);
    lv_obj_set_style_bg_color(btn_re, lv_color_hex(0x999999), LV_PART_MAIN);
    lv_obj_t * label_re = lv_label_create(btn_re);
    lv_obj_center(label_re);
    lv_label_set_text(label_re, "返回");
    lv_obj_set_style_text_color(btn_re, lv_color_hex(0x333333), LV_PART_MAIN);
    lv_obj_set_style_text_font(label_re, &SourceHanSansCN_Bold_20, LV_PART_MAIN); // 设置字体大小
    data_log->btn_re = btn_re;
    lv_obj_align(btn_re, LV_ALIGN_BOTTOM_MID, -80, -50);
    lv_obj_add_flag(btn_re, LV_OBJ_FLAG_HIDDEN);
    lv_obj_add_event_cb(btn_re, retuen_but_cb, LV_EVENT_CLICKED, data_log); // 添加返回按钮事件
}
